浏览器前端的通用后端
浏览器前端的通用后端
(idea) 引言、调研
前端 & 后端
首先,这里复习一下这里局部中 “前后端” 的概念:
前端和后端,可能指:
- 语言的前后端(js/ts or java/c++),不过一般不这样分
- 可能指业务上的前后端(负责UI/UX or 数据库/复杂逻辑/隐藏接口)
- 也可能有其他区分(性能相关、源码保密相关)
- 按机器部署和运行环境分
他们可能是耦合的也可以是分离的。例如Qt和纯前端。又分按模块区分 or 按UI/功能区分
浏览器前端 & 通用型后端
以浏览器网页为例,通常只在浏览器跑的纯前端难以成为一个独立的软件,都需要有后端。因为可能会缺失:(可能有漏)
- 通用存储(不存在浏览器上,因为多个设备可能需要同一个存储)
- 特殊请求(有的API需要有独立IP/网络代理/跨域进行访问,而Browser端可能没有这些环境导致无法访问。又或者访问后端所在电脑的一些信息和调取API)
- 保密访问(包括源码保密、一些服务秘钥的保密。多人共用时互相隔离避免你访问别人的东西)
那么我在想,除了最后一点外,其他的是否能构建一个 “通用型后端” 进行解决?很多网页纯前端只需要一个通用的而非专用后端。该后端的特点:
- 这可能是一个第三方服务,也可以是自行部署,或作为一个独立软件直接下载使用
- 尽可能通用,许多前端都可以直接使用而无需修改该后端代码
那么是否有这种 “通用后端” 软件呢?
结论
然后调研结果见下一章,这里提前总结一下
确实有类似的东西,不少。但是比较缺少一些开箱即用、可部署又可安装的情况。而且多数是ts写的
感觉如果想做类似的产品的话,还是有空间的
调研 - kimi
确实存在一些可以作为“通用型后端”的软件或服务,它们能够为纯前端应用提供通用的后端功能,以下是一些常见的类型和具体实例:
第三方后端服务
- Back4app:这是一家开源后端即服务(BaaS)提供商。它提供实时数据模型以存储足够的信息,并且提供GraphQL和REST API以连接各种操作。用户可以在该平台上开设账户,无需提供信用卡详情,即可开始使用其免费服务。它适用于各种规模的企业,允许用户随时扩展或缩减实例,还具有多云设置、详细的文档、可预测的定价和高效的性能等优势。
- Pocketbase:以轻量级自托管方案提供实时数据库、认证系统与文件存储功能。它内置认证模块,支持实时数据库和无服务器架构,可作为通用后端为多种前端应用提供支持。
自行部署的通用后端
- likeadmin通用管理后台:遵循MIT开源许可协议,是一个永久免费开源的通用前后端分离管理后台系统。它已经搭建好前后端分离的底层,包含程序安装、登录、登出、工作台、菜单权限控制、角色、管理员、部门管理、岗位管理、素材管理、网站设置、图库管理等基础功能,无需重复造轮子。后端使用Java8开发,采用Spring Boot2.7.5框架,前端使用typescript、vue3、vite开发,后台界面使用element-plus UI框架。它定位为通用的软件系统管理后台,方便开发者快速开发软件系统。
- APIJSON:是一种专为API而生的JSON网络传输协议以及基于这套协议实现的ORM库。它为各种增删改查提供了完全自动化的万能通用接口,零代码实时满足千变万化的各种新增和变更需求,可用于构建通用后端接口服务。
独立软件形式的通用后端
目前没有特别常见的以独立软件形式直接下载使用的通用后端软件,但上述的 Back4app 和 Pocketbase 等第三方服务,也可以通过自托管的方式,类似于独立软件的形式进行部署和使用。
调研 - copilot
你提到的“通用后端”是一个非常有趣的概念。实际上,已经有一些软件和服务可以作为“通用后端”使用,满足你提到的一些需求。以下是一些常见的解决方案:
- Firebase
Firebase 是 Google 提供的一个后端即服务(BaaS),它提供了许多功能,如实时数据库、身份验证、文件存储、托管等。许多前端应用程序可以使用 Firebase 而无需自行编写后端代码。 - AWS Amplify
AWS Amplify 是 Amazon Web Services 提供的一个开发平台,它为前端和移动开发人员提供了许多后端服务,如身份验证、API(GraphQL 和 REST)、存储等。Amplify 允许开发人员快速构建和连接后端服务。 - Supabase
Supabase 是一个开源的 Firebase 替代品,提供了类似的功能,如实时数据库、身份验证、存储等。它使用 PostgreSQL 作为数据库,并且可以自行部署或使用托管服务。 - Backendless
Backendless 是另一个 BaaS 平台,提供了许多后端功能,如数据存储、用户管理、推送通知、文件存储等。它也支持自定义业务逻辑和 API。 - Strapi
Strapi 是一个开源的无头 CMS(Content Management System),它允许开发人员创建自定义 API,并提供了强大的内容管理功能。Strapi 可以自行部署,并且易于扩展和定制。
这些平台和服务都提供了许多通用的后端功能,前端开发人员可以使用它们来解决通用存储、特殊请求和保密访问等问题,而无需自行编写复杂的后端代码。
至于你提到的“通用后端”软件,实际上这些 BaaS 平台和服务已经在很大程度上实现了这一目标。它们提供了丰富的后端功能,并且可以被许多不同的前端应用程序直接使用。这些平台通常也支持自行部署,满足不同项目的需求。
如果你有特定的需求或场景,可以进一步探讨是否有更合适的解决方案或定制化的方案。
调研 - Gemini
您提出的“通用后端”概念,确实触及了前端开发中一个非常实际的需求。以下是对您的调研需求的一些分析和相关信息:
通用后端的需求分析:
您提到的前端应用面临的后端需求,确实是许多纯前端应用无法独立运行的关键原因:
- 通用存储
- 前端应用在浏览器中运行,数据存储受限于浏览器的本地存储,如LocalStorage、SessionStorage等,这些存储方式存在容量限制、跨设备同步困难等问题。
- 通用后端需要提供一个持久化、可跨设备访问的存储方案,例如数据库(如MySQL、PostgreSQL、MongoDB等)或云存储服务。
- 特殊请求
- 前端应用受限于浏览器的安全策略,无法直接发起某些特殊请求,例如访问需要特定IP地址的API、访问本地文件系统等。
- 通用后端可以作为中间层,代理这些特殊请求,并向前端应用返回处理结果。
- 保密访问
- 前端应用的源代码暴露在浏览器中,敏感信息(如API密钥)容易泄露。
- 通用后端可以将敏感逻辑和数据处理放在服务器端,避免敏感信息暴露。
“通用后端”的实现方案:
实现“通用后端”有多种方案,以下是一些常见的技术和工具:
- 后端即服务(Backend as a Service,BaaS):
- BaaS平台(如Firebase、Supabase等)提供通用的后端功能,包括数据库、身份验证、云存储、API等,前端应用可以通过API直接调用这些功能。
- BaaS平台的优点是简化了后端开发和运维,降低了开发成本。
- Node.js和Express.js:
- Node.js是一个JavaScript运行时环境,可以用于构建服务器端应用。
- Express.js是一个流行的Node.js Web应用框架,可以快速构建RESTful API。
- 开发者可以使用Node.js和Express.js搭建自定义的通用后端,满足特定的需求。
- 云函数(Cloud Functions):
- 云函数(如AWS Lambda、Google Cloud Functions、Azure Functions等)是一种无服务器计算服务,可以按需运行后端代码。
- 开发者可以使用云函数编写简单的后端逻辑,例如API代理、数据处理等。
- API网关:
- API网关可以统一管理和代理后端API,提供身份验证、授权、流量控制等功能。
- API网关可以作为通用后端的入口,简化前端应用的API调用。
通用后端软件的现状:
- 目前,没有一个完全通用的、可以满足所有前端应用需求的“通用后端”软件。
- BaaS平台是最接近“通用后端”概念的解决方案,但它们通常是云服务,需要付费使用。
- 开源的后端框架(如Node.js和Express.js)提供了构建通用后端的灵活性,但需要开发者自行搭建和维护。
- 在云服务中,例如阿里云,腾讯云,亚马逊云提供的云服务,可以搭建满足大多数需求的“通用后端”。
总结:
- “通用后端”是一个很有价值的概念,可以解决前端应用面临的许多后端需求。
- BaaS平台和开源后端框架是实现“通用后端”的两种主要方案。
- 选择哪种方案取决于具体的应用场景、开发成本和运维需求。
希望这些信息能够帮助您更好地理解“通用后端”的概念和实现方案。
调研 - Deepseek
基于你的需求,现有的“通用型后端”解决方案可以分为两类:第三方服务(BaaS) 和 可自行部署的开源框架。以下是具体的分析和推荐方案:
一、第三方服务(BaaS:Backend as a Service)
这类服务提供标准化的后端功能(如用户管理、数据库、存储、API 代理等),开发者无需自行开发后端,只需通过前端调用接口即可实现核心功能。
特点:
- 开箱即用:无需部署和维护服务器。
- 按需扩展:适合中小型项目或快速验证需求。
- 多设备支持:数据存储和用户状态天然支持多设备同步。
推荐方案:
- Firebase
- 提供实时数据库、用户认证、云存储、云函数等功能。
- 支持前端直接调用 API,无需后端代码。
- 适合需要实时数据同步的场景(如聊天应用、协作工具)。
- 缺点:依赖谷歌生态,国内访问可能受限。
- Supabase
- 开源替代 Firebase 的方案,提供 PostgreSQL 数据库、身份验证、存储等功能。
- 支持自托管,适合需要数据控制权的场景。
- AppWrite
- 开源 BaaS 平台,提供用户管理、数据库、存储、云函数等模块。
- 支持 Docker 部署,可完全私有化。
二、可自行部署的开源框架
这类方案需要开发者自行部署后端服务,但提供通用化的模块(如用户管理、API 路由、存储接口),可适配多种前端应用。
特点:
- 灵活可控:可根据需求扩展或裁剪功能。
- 数据隔离:通过权限系统实现多用户隔离。
- 跨域支持:内置代理功能解决浏览器跨域问题。
推荐方案:
- RuoYi(若依)
- 基于 Spring Boot 的后台管理系统,提供用户权限、数据管理、API 接口等模块。
- 支持多数据源和分布式事务,适合企业级应用。
- NocoDB
- 将数据库转换为 RESTful API,支持多种数据库(MySQL、PostgreSQL 等)。
- 前端可直接通过 API 操作数据,无需编写后端代码。
- Strapi
- 无头 CMS(内容管理系统),提供可定制的 API 接口和权限管理。
- 支持插件扩展,适合内容型应用。
- AntD Admin 后端方案
- 结合 Ant Design Pro 的中台架构,通过动态路由和权限控制提供通用接口。
- 支持 Mock 数据和国际化,适合中后台系统。
三、通用后端需要解决的核心问题
- 统一存储
- 方案:使用云存储服务(如 MinIO 自建私有云)或数据库中间件(如 NocoDB),提供标准化接口。
- API 代理与跨域
- 方案:通过 Nginx 反向代理或后端框架(如 Spring Cloud Gateway)统一处理跨域请求和路由转发。
- 权限与隔离
- 方案:基于角色的访问控制(RBAC)或多租户架构(如 Keycloak 身份认证系统)。
四、是否已有成熟的“通用后端”?
目前没有完全通用的后端软件,但通过组合现有工具可实现类似效果:
- 前端:使用 Vue/React 等框架开发,对接标准化 API。
- 后端:采用 BaaS 服务(如 Supabase)或开源框架(如 Strapi + MinIO),提供用户管理、存储和 API 代理。
- 部署:通过 Docker 或 Kubernetes 实现一键部署。
五、建议
- 快速验证需求:优先选择 BaaS(如 Firebase 或 Supabase)。
- 企业级私有化:采用 RuoYi 或 Strapi 等开源框架自行部署。
- 特殊场景:结合 Nginx 代理和云存储服务定制化开发。
可进一步参考:若依系统、Supabase 文档。
调研 - 一些概念
CMS Handless ../../03. 管理层/01. 多类管理/REST API BaaS
:::quote BaaS
BaaS平台(如Firebase、Supabase等)提供通用的后端功能,包括数据库、身份验证、云存储、API等,前端应用可以通过API直接调用这些功能。
BaaS平台的优点是简化了后端开发和运维,降低了开发成本。
话说这个术语看起来有点像 “SaaS (软件即服务, Software as a service)”
:::
:::quote 内容管理系统(Content Management System,CMS)
内容管理系统(Content Management System,CMS),是一种位于WEB前端(Web 服务器)和后端办公系统或流程(内容创作、编辑)之间的软件系统。内容的创作人员、编辑人员、发布人员使用内容管理系统来提交、修改、审批、发布内容。这里指的“内容”可能包括文件、表格、图片、数据库中的数据甚至视频等一切你想要发布到Internet、Intranet以及Extranet网站的信息。
:::
调研 - 比较总结
然后再来对比
粗筛
- Firebase
- tag: BaaS
- 官网: https://firebase.google.com/?hl=zh-cn
- Firebase 是 Google 提供的一个后端即服务(BaaS),它提供了许多功能,如实时数据库、身份验证、文件存储、托管等。许多前端应用程序可以使用 Firebase 而无需自行编写后端代码
- 提供实时数据库、用户认证、云存储、云函数等功能
- 支持前端直接调用 API,无需后端代码
- 适合需要实时数据同步的场景(如聊天应用、协作工具)
- 缺点:依赖谷歌生态,国内访问可能受限
- Supabase
- tag: 开源、BaaS
- Typescript, 79.2k, yesterday
- 官网: https://supabase.com/
- Supabase 是一个开源的 Firebase 替代品,提供了类似的功能,如实时数据库、身份验证、存储等。它使用 PostgreSQL 作为数据库,并且可以自行部署或使用托管服务
- 开源替代 Firebase 的方案,提供 PostgreSQL 数据库、身份验证、存储等功能
- 支持自托管,适合需要数据控制权的场景
- AppWrite
- tag: 开源、BaaS、可自行部署
- TypeScript, 47.6k, 3 weeks ago
- 官网: https://appwrite.io/ github - README-CN
- 开源 BaaS 平台,提供用户管理、数据库、存储、云函数等模块
- 支持 Docker 部署,可完全私有化
- pocketbase
- tag: 开源、REST API
- Go, 44.5k, 1 hour ago
- 官网: https://pocketbase.io/
- 官方介绍: 是一个开源的Go后端,包括:嵌入式数据库(SQLite)与实时订阅、内置文件和用户管理、方便的管理仪表板UI、简单的rest API
- RuoYi(若依)
- tag: 开源、可自行部署
- Java/Js, 6.8k, yesterday
- 官网: https://ruoyi.vip/
- github - README-zh
- 基于 Spring Boot 的后台管理系统,提供用户权限、数据管理、API 接口等模块
- 支持多数据源和分布式事务,适合企业级应用
- NocoDB
- tag: 开源、可自行部署、REST API
- TypeScript, 53k, yesterday
- 官网: https://nocodb.com/
- 将数据库转换为 RESTful API,支持多种数据库(MySQL、PostgreSQL 等)
- 前端可直接通过 API 操作数据,无需编写后端代码
- Strapi
- tag: 开源、可自行部署、无头后端
- TypeScript, 65.6k, yesterday
- 官网: https://strapi.io/
- 功能:无头 CMS(内容管理系统),提供可定制的 API 接口和权限管理。支持插件扩展,适合内容型应用
- Strapi 是一个开源的无头 CMS(Content Management System),它允许开发人员创建自定义 API,并提供了强大的内容管理功能。Strapi 可以自行部署,并且易于扩展和定制。
- AntD Admin
- tag: 开源、可自行部署
- JavaScript, 9.7k, 11 months ago
- 结合 Ant Design Pro 的中台架构,通过动态路由和权限控制提供通用接口
- 支持 Mock 数据和国际化,适合中后台系统
- AWS Amplify
- tag:开源、REST API
- TypeScript, 9.5k, yesterday
- AWS Amplify 是 Amazon Web Services 提供的一个开发平台,它为前端和移动开发人员提供了许多后端服务,如身份验证、API(GraphQL 和 REST)、存储等。Amplify 允许开发人员快速构建和连接后端服务。
- Express.js
- tag: 开源
- JavaScript, 66.5k, 4 days ago
- 官网: https://expressjs.com/
- Node.js是一个JavaScript运行时环境,可以用于构建服务器端应用。
- Express.js是一个流行的Node.js Web应用框架,可以快速构建RESTful API。
- 开发者可以使用Node.js和Express.js搭建自定义的通用后端,满足特定的需求 (要自己加工来写,不合适)
- 云函数(Cloud Functions)
- 云函数(如AWS Lambda、Google Cloud Functions、Azure Functions等)是一种无服务器计算服务,可以按需运行后端代码。
- 开发者可以使用云函数编写简单的后端逻辑,例如API代理、数据处理等。
- Backendless
- tag: BaaS
- Java, 57, 2 years ago
- Backendless 是另一个 BaaS 平台,提供了许多后端功能,如数据存储、用户管理、推送通知、文件存储等。它也支持自定义业务逻辑和 API
- API网关
二筛
话说这挺多 TypeScript 写的。这里按偏好和star数排序一下:
- Supabase
- tag: 开源、BaaS、有在线版
- Typescript, 79.2k, yesterday
- 官网: https://supabase.com/
- 官方介绍:数据库托管、身份验证和授权、自动生成API、函数、文件存储、AI+向量工具包、仪表盘
- Strapi
- tag: 开源、可自行部署、无头后端
- TypeScript, 65.6k, yesterday
- 官网: https://strapi.io/
- 功能:无头 CMS(内容管理系统),提供可定制的 API 接口和权限管理。支持插件扩展,适合内容型应用
- 官方介绍:Strapi是领先的开源无头CMS。它是100%的JavaScript/TypeScript,完全可定制,开发者优先。
- NocoDB
- tag: 开源、可自行部署、REST API
- TypeScript, 53k, yesterday
- 官网: https://nocodb.com/
- 功能:将数据库转换为 RESTful API,支持多种数据库(MySQL、PostgreSQL 等)
- AppWrite
- tag: 开源、BaaS、可自行部署
- TypeScript, 47.6k, 3 weeks ago
- 官网: https://appwrite.io/ github - README-CN
- 功能:提供用户管理、数据库、存储、云函数等模块
- 官方介绍:在几分钟内构建整个后端,并使用Appwrite的开源平台轻松扩展。使用您选择的框架和语言向您的项目添加身份验证、数据库、函数、存储和消息传递。
- RuoYi(若依)
- tag: 开源、可自行部署
- Java/Js (Spring Boot), 6.8k, yesterday
- 官网: https://ruoyi.vip/ github - README-zh
- 功能:后台管理系统,提供用户权限、数据管理、API 接口等模块。支持多数据源和分布式事务,适合企业级应用
Star-History
命名
是否可能有一个更好的描述/术语来代替我所说的“通用后端”?
根据你的需求,以下几个术语可以更精准地替代“通用后端”,且符合行业常用表述:
- Backend as a Service (BaaS)
- 适用场景
- 强调第三方服务提供标准化的后端功能(如数据库、存储、认证)。
- 无需自行部署和维护,前端直接调用 API。
- 优势
- 行业标准术语,开发者广泛认可(如 Firebase、Supabase)。
- 隐含“通用性”,因为 BaaS 的设计目标就是服务多种前端。
- 适用场景
- 无头后端(Headless Backend)
- 适用场景
- 后端仅通过 API 提供服务,不包含任何前端逻辑(如 Strapi、AppWrite)。
- 强调前后端完全解耦,适配任意前端框架
- 优势
- 术语“无头(Headless)”在开发领域常见(如 Headless CMS),突出灵活性。
- 适用场景
- 通用 API 中间件(Universal API Middleware)
- 适用场景
- 后端作为中间层,统一处理数据存储、权限校验、API 代理等逻辑。
- 强调“中间件”角色(如 Nginx 反向代理 + Keycloak 权限管理)。
- 优势
- 明确功能定位(连接前端与底层服务)
- 适用场景
- 统一后端平台(Unified Backend Platform)
- 适用场景
- 提供一站式后端服务(用户管理、存储、API 路由等),支持多租户隔离。
- 适合企业级复杂需求(如 RuoYi、低代码平台)。
- 优势
- 强调“平台化”,隐含模块化和可扩展性。
- 适用场景
- 全功能后端框架(Full-stack Backend Framework)
- 适用场景
- 自托管后端,内置通用功能(如 Spring Boot、NestJS 生态)
- 开发者可基于框架快速定制业务逻辑。
- 优势
- 强调技术栈完整性,适合需要深度定制的场景
- 适用场景
如何选择术语?
- 目标用户是开发者:优先用 BaaS 或 Headless Backend(行业通用,易理解)
- 强调自托管和可控性:用 通用 API 中间件 或 统一后端平台
- 学术或架构设计文档:用 通用 API 中间件(更技术化)
建议使用示例
- 如果想表达“一个无需开发、直接集成的前端伴侣后端”,可以说:
“通过 BaaS(如 Supabase)快速实现前端应用的标准化后端需求。” - 如果想表达“可私有化部署的通用后端模块”,可以说:
“基于 Headless Backend 框架(如 Strapi)构建统一后端平台,支持多前端接入。”
可根据具体场景灵活组合术语,以更精准传达核心价值。